/* 
用于存储JS的工具函数
函数封装:遵循小而美的原则
    1.使用方便，灵活复用 
    2.实现功能的函数代码简洁 
    3.函数的性能心法:复用封函数，变化改参数
 */

/**
 * @description 通过指定选择器选择对应的节点
 * @param {string} selector 选择器,{传入的参数类型}
 * @returns 返回选择器对应的节点
 */
// 查询单个节点
/* function $(selector) {
	return document.querySelector(selector);
} */

//实现返回一个或者多个节点的函数
// 方法一:
/* function $(selector, flag = false) {
	if (flag) {
		return document.querySelectorAll(selector);
	} else {
		return document.querySelector(selector);
	}
}
 */
//方法二:
function $(selector) {
	let nodeList = document.querySelectorAll(selector);
	if (nodeList.length === 0) {
		return console.warn(`${selector}没有获取到节点`);
	}
	if (nodeList.length === 1) {
		return nodeList[0];
	}
	if (nodeList.length > 1) {
		return nodeList;
	}
}

// tab
function tab(tabselector, tabclass, nodeselector, nodeclass) {
	$(tabselector).forEach(function (v, i) {
		v.addEventListener("click", function () {
			$(tabselector).forEach(function (v, i) {
				v.classList.remove(tabclass);
				if (nodeselector) {
					$(nodeselector)[i].classList.remove(nodeclass);
				}
			});
			v.classList.add(tabclass);
			if (nodeselector) {
				$(nodeselector)[i].classList.add(nodeclass);
			}
		});
	});
}
